<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%>
<!--
该设置代表在本jsp中使用el表达式，可以解析其中的值。若isELIgnored设置为true，代表在本页不使用el表达式，当做字符串解析出来显示。
那么为什么会这样？首先查看，web.xml中配置的<web-app>标签，jsp servlet版本是多少？发现之前配置如下：

<%--<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.5//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
...
</web-app>--%>

如果isELIgnored是true，当EL表达式出现在文本或者标签属性时被忽略。如果是false，则EL表达式通过容器来决定如何解析，只有属性有返回表达式被设置为true或者表达式是一个延迟表达式时不解析。

isELIgnored的值取决于web应用部署描述符的版本。使用Servlet2.4的描述符的JSP页面默认是解析EL表达式，即表达式有效。这默认提供了大部分应用想要的情况。而使用Servlet2.3或者更早的描述符的JSP页面默认是忽略EL表达式的，即不解析EL表达式，这样就提供了向后兼容性。

Oracle文档：https://docs.oracle.com/cd/E19316-01/819-3669/bnaic/index.html

也就是说，描述符2.4或者更新的版本，isELIgnored默认值为false，而2.3或者 更早的版本isELIgnored默认值为true。就导致了出现EL表达式无效的情况。
至此，问题已经解决。
-->
<%@page isELIgnored="false" %>
<% 
   String contextPath=request.getContextPath(); 
   String wwwUrl = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
   String basePath = wwwUrl+contextPath+"/";
%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<%pageContext.setAttribute("ctx", contextPath); %>
<%pageContext.setAttribute("wwwUrl", wwwUrl); %>
<%pageContext.setAttribute("basePath", basePath); %>
<%pageContext.setAttribute("locale", request.getLocale()); %>
